package com.admin_system.pojo;

import lombok.Getter;
import lombok.Setter;

import java.util.Date;

/**
 * 通用物料实体类
 * 表示系统中的物料资源，包括文件信息和元数据
 * 用于存储各种类型的文件，如文档、图片、视频等
 */
@Setter
@Getter
public class Material {
    
    /**
     * 物料唯一标识ID
     */
    private Long id;
    
    /**
     * 文件原始名称
     */
    private String fileName;
    
    /**
     * 文件在服务器上的存储路径
     */
    private String filePath;
    
    /**
     * 物料描述信息
     */
    private String description;
    
    /**
     * 文件MIME类型，如application/pdf、image/jpeg等
     */
    private String fileType;
    
    /**
     * 文件大小（字节）
     */
    private Long fileSize;
    
    /**
     * 文件上传时间
     */
    private Date uploadTime;
    
    /**
     * 文件上传者用户名
     */
    private String uploadUser;
    
    /**
     * Web访问路径，相对于static目录的URL路径
     */
    private String webPath;
    
    /**
     * 默认构造函数
     */
    public Material() {
    }
    
    /**
     * 全参数构造函数
     *
     * @param fileName 文件名称
     * @param filePath 文件路径
     * @param description 文件描述
     * @param fileType 文件类型
     * @param fileSize 文件大小
     * @param uploadTime 上传时间
     * @param uploadUser 上传用户
     */
    public Material(String fileName, String filePath, String description, String fileType, Long fileSize, Date uploadTime, String uploadUser) {
        this.fileName = fileName;
        this.filePath = filePath;
        this.description = description;
        this.fileType = fileType;
        this.fileSize = fileSize;
        this.uploadTime = uploadTime;
        this.uploadUser = uploadUser;
    }

    /**
     * 重写toString方法，用于日志打印和调试
     *
     * @return 物料对象的字符串表示
     */
    @Override
    public String toString() {
        return "Material{" +
                "id=" + id +
                ", fileName='" + fileName + '\'' +
                ", description='" + description + '\'' +
                ", fileType='" + fileType + '\'' +
                ", fileSize=" + fileSize +
                ", uploadTime=" + uploadTime +
                ", uploadUser='" + uploadUser + '\'' +
                ", webPath='" + webPath + '\'' +
                '}';
    }
} 